/**
 * @author cookie
 * 给定一个整型数组，在数组中找出由三个数组成的最大乘积，并输出这个乘积。
 * 示例 1:
 * 输入: [1,2,3]
 * 输出: 6
 */

 /**
 * @param {number[]} nums
 * @return {number}
 */
let nums = [3, 4, 6, 7, 8, 9, 10, 199, 78, 90, 43, 87]

// 先排序, 然后找到最大的三个数就可以了. 
/**
 * @param {number[]} nums
 * @return {number}
 */

//  冒泡排序
 function sort(nums) {
    if(nums.length <=1) return nums 
    for (let  i= 0;  i< nums.length; i++) {
        if(nums[i]> nums[i +1]){
            let temp = nums[i]
            nums[i] = nums[i +1]
            nums[i +1] =  temp
        }        
    }
    return nums
 }


//  快速排序
 function quickSort(nums) {
     let leftArr = [], rightArr = []
     const provitIndex = Math.floor(nums.length/2)
     const provit = nums[provitIndex]
     for(let i =0; i< nums.length; i++) {
         if(nums[i] >= nums[provitIndex]){
            rightArr.push(nums[i])
         }else {
            leftArr.push(nums[i])
         }
     }
     return [...quickSort(leftArr), provit, ...quickSort(rightArr)]
 }


var maximumProductFun2 = function(nums) {
    nums =  sort(nums)
    const length = nums.length
   const res = nums[length-1] * nums[length-2]*nums[length-3]
   return res 
};

const res = maximumProductFun2(nums)
console.log(res);